package core1.ch04class;

class Table {
	static Bowl b1 = new Bowl(1);

	static {
		int a=13;
		int b=23;
		int c=465;
	}
	
	Table() {
		System.out.println("Table()");
		b2.f(1);
	}

	void f2(int marker) {
		System.out.println("f2(" + marker + ")");
	}
	
	static void f3() {
		System.out.println("my f3!!");
	}

	static Bowl b2 = new Bowl(2);
	
	
}

class Bowl {
	static void bowl3() {
		System.out.println("my bowl3!!");
	}
	static {
		int a=13;
		int b=23;
		int c=465;
	}
	void f(int marker) {
		System.out.println("f(" + marker + ")");
	}
	Bowl(int marker) {
		System.out.println("Bowl(" + marker + ")");
	}


}

class Cupboard {
	Bowl b3 = new Bowl(3);
	static Bowl b4 = new Bowl(4);

	Cupboard() {
		System.out.println("Cupboard()");
		b4.f(2);
	}

	void f3(int marker) {
		System.out.println("f3(" + marker + ")");
	}

	static Bowl b5 = new Bowl(5);
}

public class StaticInitialization {
//	static Test monitor = new Test();

	public static void main(String[] args) {
		
		System.out.println("Creating new Cupboard() in main");
		new Cupboard();
		System.out.println("Creating new Cupboard() in main");
		new Cupboard();
		//t2.f2(1);
		t3.f3(1);
//		monitor.expect(new String[] { "Bowl(1)", "Bowl(2)", "Table()", "f(1)",
//				"Bowl(4)", "Bowl(5)", "Bowl(3)", "Cupboard()", "f(2)",
//				"Creating new Cupboard() in main", "Bowl(3)", "Cupboard()",
//				"f(2)", "Creating new Cupboard() in main", "Bowl(3)",
//				"Cupboard()", "f(2)", "f2(1)", "f3(1)" });
	}
	static Table t2 = new Table();
	static Cupboard t3 = new Cupboard();
	
} ///:~